package leetcode_500;

/**
 *@author 周杨
 *NumberComplement_476 一个数二进制反转后转换成int 
 *describe:用好位运算 AC 80%
 *2018年8月30日 下午3:28:38
 */
public class NumberComplement_476 {
	 public int findComplement(int num) {
	       String s=Integer.toBinaryString(num);
	       int res=0;
	       char chars[]=s.toCharArray();
	       for(int i=chars.length-1;i>=0;--i) {
	    	   if(chars[i]=='0')
	    		   res+=Math.pow(2, chars.length-1-i);
	       }
	       return res;
	 }
	 
	 /**
	 * describe:AC 80%
	 * 2018年8月30日 下午3:28:26
	 */
	public int findComplement1(int num) {
	        int x=1,i=1;
	        while(x<=num && i<32){
	            num=num^x;//两个数不同的时候才为1 那么除了第一位被反转 其他位被保留
	            x=x<<1;
	            i++;
	        }

	        return num;
	    }
}
